const config = {
  projectName: 'taro_widgets',
  date: '2020-6-12',
  designWidth: 750,
  deviceRatio: {
    '640': 2.34 / 2,
    '750': 1,
    '828': 1.81 / 2
  },
  sourceRoot: 'src',
  outputRoot: 'dist',
  babel: {
    sourceMap: true,
    presets: [
      ['env', {
        modules: false
      }]
    ],
    plugins: [
      'transform-decorators-legacy',
      'transform-class-properties',
      'transform-object-rest-spread',
      ['transform-runtime', {
        "helpers": false,
        "polyfill": false,
        "regenerator": true,
        "moduleName": 'babel-runtime'
      }]
    ]
  },
  // 小程序配置从 weapp 改为 mini，可以删掉很多小配置
  mini: {
    webpackChain (chain, webpack) {},
    cssLoaderOption: {},
    postcss: {
      pxtransform: {
        enable: true,
        config: {}
      },
      url: {
        enable: true,
        config: {
          limit: 10240 // 设定转换尺寸上限
        }
      }
    }
  },
  // 小程序配置从 weapp 改为 mini，可以删掉很多小配置
  tt: {
    webpackChain (chain, webpack) {},
    cssLoaderOption: {},
    postcss: {
      pxtransform: {
        enable: true,
        config: {}
      },
      url: {
        enable: true,
        config: {
          limit: 10240 // 设定转换尺寸上限
        }
      }
    }
  },
  // 可以删掉很多小配置
  h5: {
    publicPath: '/',
    staticDirectory: 'static',
    webpackChain (chain, webpack) {},
    postcss: {
      autoprefixer: {
        enable: true,
        config: {
          browsers: [
            'last 3 versions',
            'Android >= 4.1',
            'ios >= 8'
          ]
        }
      }
    }
  }
}

module.exports = function (merge) {
  if (process.env.TARO_BUILD_TYPE === 'ui') {
    Object.assign(config.h5, {
      enableSourceMap: false,
      enableExtract: false,
      enableDll: false
    })
    config.h5.webpackChain = chain => {
      chain.plugins.delete('htmlWebpackPlugin')
      chain.plugins.delete('addAssetHtmlWebpackPlugin')
      chain.merge({
        output: {
          path: path.join(process.cwd(), 'dist', 'h5'),
          filename: 'index.js',
          libraryTarget: 'umd',
          library: 'taro-widgets'
        },
        externals: {
          nervjs: 'commonjs2 nervjs',
          classnames: 'commonjs2 classnames',
          '@tarojs/components': 'commonjs2 @tarojs/components',
          '@tarojs/taro-h5': 'commonjs2 @tarojs/taro-h5',
          'weui': 'commonjs2 weui'
        }
      })
    }
  }
  if (process.env.NODE_ENV === 'development') {
    return merge({}, config, require('./dev'))
  }
  
  return merge({}, config, require('./prod'))
}
